package ems_lib

// 寄存器数据类型
type ENUM_REG_TYPE int

const (
	ENUM_REG_TYPE_BOOL   ENUM_REG_TYPE = iota // 开关量
	ENUM_REG_TYPE_INT                         // 离散量
	ENUM_REG_TYPE_REAL                        // 模拟量
	ENUM_REG_TYPE_STRING                      // 字符串
)

// tag数据类型
type ENUM_TAGDATA_TYPE int

const (
	ENUM_TAGDATA_TYPE_BOOL ENUM_TAGDATA_TYPE = iota //
	ENUM_TAGDATA_TYPE_INT8
	ENUM_TAGDATA_TYPE_UINT8
	ENUM_TAGDATA_TYPE_INT16
	ENUM_TAGDATA_TYPE_UINT16
	ENUM_TAGDATA_TYPE_INT32
	ENUM_TAGDATA_TYPE_UINT32
	ENUM_TAGDATA_TYPE_INT64
	ENUM_TAGDATA_TYPE_UINT64
	ENUM_TAGDATA_TYPE_FLOAT
	ENUM_TAGDATA_TYPE_DOUBLE
	ENUM_TAGDATA_TYPE_STRING
)

// 读写策略
type ENUM_RW_TYPE int

const (
	ENUM_RW_TYPE_READONLY  ENUM_RW_TYPE = iota // 只读
	ENUM_RW_TYPE_RW                            // 读写
	ENUM_RW_TYPE_Writeonly                     // 只写
)

// 上传策略
type ENUM_UPLOAD_TYPE int

const (
	ENUM_UPLOAD_DISABLE         ENUM_UPLOAD_TYPE = iota // 禁止上送
	ENUM_UPLOAD_CYCLE                                   // 周期上送
	ENUM_UPLOAD_CHANGED_ABS                             // 变化上送绝对变化
	ENUM_UPLOAD_CHANGED_STEP                            // 变化上送步长变化
	enum_UPLOAD_CHANGEd_PERCENT                         // 变化上送百分比变化
	enum_UPLOAD_ABS_CYCLE                               // 绝对值变化上送且周期上送
	enum_UPLOAD_STEP_CYCLE                              // 步长变化上送且周期上送
	enum_UPLOAD_PERCENT_CYCLE                           // 百分比变化上送且周期上送
)

// 点位类型，实点虚点
type ENUM_TAG_TYPE int

const (
	ENUM_TAG_TYPE_UNREAL ENUM_TAG_TYPE = iota // 虚点
	ENUM_TAG_TYPE_REAL                        // 实点
)

// 设备类型，实体设备或虚拟设备
type ENUM_DEVICE_TYPE int

const (
	ENUM_DEVICE_TYPE_UNREAL ENUM_TAG_TYPE = iota // 虚点
	ENUM_DEVICE_TYPE_REAL                        // 实点
)

// 数据变化规律
type ENUM_TAG_CHANGE int

const (
	ENUM_TAG_INSTANT  ENUM_TAG_CHANGE = iota // 瞬时量，如电压、电流等数据
	ENUM_TAG_INCREASE                        // 递增量，如电能、表底数
	ENUM_TAG_DECREASE                        // 递减量，如电量剩余等
)

// 数据质量
type ENUM_DATA_QUALITY int

const (
	ENUM_DATA_QUALITY_NORMAL     ENUM_DATA_QUALITY = iota // 正常数据
	ENUM_DATA_QUALITY_MAX                                 // 数据超上限
	ENUM_DATA_QUALITY_MIN                                 // 数据超下限
	ENUM_DATA_QUALITY_UNEXPECTED                          // 数据不符合变化规律
	ENUM_DATA_QUALITY_LOST                                // 采集缺失
)

// 使能
type ENUM_ENABLE int

const (
	ENUM_ENABLE_DISABLE ENUM_ENABLE = iota // 禁用
	ENUM_ENABLE_ENABLE                     // 启用
)

// 服务控制命令
type ENUM_SERVICE_CMD int

const (
	ENUM_SERVICE_CMD_STOP    ENUM_SERVICE_CMD = iota // 停止
	ENUM_SERVICE_CMD_STARTUP                         // 启动
	ENUM_SERVICE_CMD_RESTART                         // 重启
)

// 服务状态
type ENUM_SERVICE_STATUS int

const (
	ENUM_SERVICE_STATUS_STOPED     ENUM_SERVICE_STATUS = iota // 停止状态
	ENUM_SERVICE_STATUS_RUNNING                               // 运行状态
	ENUM_SERVICE_STATUS_SUSPENDED                             // 假死状态
	ENUM_SERVICE_STATUS_RESTARTING                            // 重启状态
	ENUM_SERVICE_STATUS_UNKOWN                                // 未知状态
)

// 设备在线状态
type ENUM_DEVICE_STATUS int

const (
	ENUM_DEVICE_STATUS_OFFLINE  ENUM_DEVICE_STATUS = iota //离线
	ENUM_DEVICE_STATUS_ONLINE                             // 在线
	ENUM_DEVICE_STATUS_UNHEALTH                           //在线但通讯状态不佳
)
